A video encoder compresses video information so that more information can be sent over a given bandwidth. The compressed signal may then be transmitted to a receiver that decodes or decompresses the signal prior to display.
High Efficient Video Coding (HEVC) is a new video compression standard planned to be finalized by the end 2012. It is currently under development by the Joint Collaborative Team on Video Coding (JCT-VC) formed by ISO/IEC Moving Picture Experts Group (MPEG) and ITU-T Video Coding Experts Group (VCEG). Similar with previous video coding standards, HEVC consists of basic modules such as intra/inter prediction, transform, quantization and in-loop filtering and entropy coding. The team will also standardize a Scalable Video Coding (SVC) extension of HEVC standard.
As the standardization of the main part of HEVC is reaching completion. JCT-VC has started planning to add a Scalable Video Coding (SVC) extension into HEVC standard. SVC is an important issue to cope with the heterogeneity of networks and devices in modern video service environment. A SVC bit stream contains several subset bit streams that can themselves be decoded, and these sub streams represent the source video content with different resolution, frame rate, quality, bit depth, and etc. The scalabilities are achieved by using a multi-layer coding structure. In general, there's one Base Layer and several Enhancement Layers in a SVC system.
HEVC defines Coding Units (CUs), which are used to sub-partition a picture into rectangular blocks with variable size. The Largest coding unit (LCU) can be a 128×128 block, a 64×64 block, a 32×32 block or a 16×16 block. A LCU can be encoded directly or be divided into 4 Coding Unit (CU) for next level encoding. For a CU in one level, it can be encoded directly or be further divided into next level for encoding. The smallest CU is 8×8. Within each LCU, a quadtree based splitting scheme may be used to specify the coding unit partition pattern.
In addition, Prediction Units (PUs) and Transform Units (TUs) are also defined by HEVC to specify how to divide a coding unit to do the prediction and transform, respectively. The PU segmentation depends on the coding unit coding mode. When intra coded, a coding unit with size equal to 2N×2N can be predicted in one 2N×2N PU or in four N×N PUs. When inter coded, a 2N×2N coding unit can be predicted in one 2N×2N PU, or two 2N×N PUs, or two N×2N PUs, or one 0.5N×2N PU and one 1.5N×2N PU, or one 1.5N×2N PU and one 0.5N×2N PU, or one 2N×0.5N PU and one 2N×1.5N PU, or one 2N×1.5N PU and one 2N×0.5N PU, or four N×N PUs. The TU partition may also quadtree splitting based.
For example, a series of block transform cores are defined in HEVC, which can be categorized as Square Quad-tree Transform (SQT) and Non-Square Quad-tree Transform (NSQT). SQT may be performed with sizes of 32×32, 16×16, 8×8 and 4×4. NSQT may be performed with sizes of 32×8, 8×32, 16×4 and 4×16. After the intra or inter prediction, such transforms may apply to the residual blocks to generate coefficients. After that, the coefficients are quantized, scanned into one-dimensional order and finally CABAC coded.